package com.koron.rating.change.bean;

import com.koron.bean.base.BaseBean;
import com.koron.rating.classify.bean.RatingUnitBean;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.List;

/**
 * 设备评级-变更划分(树)
 */
@ApiModel(value = "设备评级-变更划分(树)")
@Data
public class UnitChangeDetBean extends BaseBean {
    /**
     * 主键
     */
    @ApiModelProperty(value = "主键")
    private String primaryId;

    /**
     * 单元划分主键
     */
    @ApiModelProperty(value = "单元划分主键")
    private String id;

    /**
     * 变更单id
     */
    @ApiModelProperty(value = "变更单id")
    private String changeId;

    /**
     * 设备台账id 关联台账id 只可以选 对应单元类型5、6
     */
    @ApiModelProperty(value = "设备台账id 关联台账id 只可以选 对应单元类型5、6")
    private String equipmentId;

    /**
     * 设备台账名称 关联台账名称，只可以选  对应单元类型5、6
     */
    @ApiModelProperty(value = "设备台账名称 关联台账名称，只可以选  对应单元类型5、6")
    private String equipmentName;

    /**
     * 部门id 对应单元类型2，3
     */
    @ApiModelProperty(value = "部门id 对应单元类型2，3")
    private String deptId;

    /**
     * 部门name 对应单元类型2，3
     */
    @ApiModelProperty(value = "部门name 对应单元类型2，3")
    private String deptName;

    /**
     * 单元名称、设备名称 允许修改
     */
    @ApiModelProperty(value = "单元名称、设备名称 允许修改")
    private String name;

    /**
     * 单元类型 数据字典: unit_type 1根节点、2部门、3单位、4单元、5设备、6部件（与台账的业务层级可以对应）
     */
    @ApiModelProperty(value = "单元类型 数据字典: unit_type 1根节点、2部门、3单位、4单元、5设备、6部件（与台账的业务层级可以对应）")
    private String unitType;

    /**
     * 父级ID 默认有一个根节点
     */
    @ApiModelProperty(value = "父级ID 默认有一个根节点")
    private String parentId;

    /**
     * 父级名称
     */
    @ApiModelProperty(value = "父级名称")
    private String parentName;

    /**
     * 层级
     */
    @ApiModelProperty(value = "层级")
    private Integer level;

    /**
     * 层级编码 从1开始,限制最多999
     */
    @ApiModelProperty(value = "层级编码 从1开始,限制最多999")
    private Integer levelCode;

    /**
     * 层级路径 拼装而成，用来查询子节点：1/23/45/999
     */
    @ApiModelProperty(value = "层级路径 拼装而成，用来查询子节点：1/23/45/999")
    private String levelPath;

    /**
     * 全路径单元id
     */
    @ApiModelProperty(value = "全路径单元id")
    private String fullPathCode;

    /**
     * 全路径台账名称
     */
    @ApiModelProperty(value = "全路径台账名称")
    private String fullPathName;

    /**
     * 设备分类ID 通过分类，关联出评级标准，前端自动加载在规则内匹配到的第一个评级标准
     */
    @ApiModelProperty(value = "设备分类ID 通过分类，关联出评级标准，前端自动加载在规则内匹配到的第一个评级标准")
    private String typeId;

    /**
     * 设备分类名称
     */
    @ApiModelProperty(value = "设备分类名称")
    private String typeName;

    /**
     * 评级标准id
     */
    @ApiModelProperty(value = "评级标准id")
    private String ratingId;

    /**
     * 适用范围
     */
    @ApiModelProperty(value = "适用范围")
    private String usableRange;

    /**
     * 专业 数据字典:common_major
     */
    @ApiModelProperty(value = "专业 数据字典:common_major")
    private String major;

    /**
     * 是否主要设备
     */
    @ApiModelProperty(value = "是否主要设备")
    private Boolean iscore;

    /**
     * 排序字段
     */
    @ApiModelProperty(value = "排序字段")
    private Integer sort;

    @ApiModelProperty(value = "设备管理单位id 前端组件相关")
    private String unitId;

    @ApiModelProperty(value = "设备管理单位名称 前端组件相关")
    private String unitName;

    /**
     * 数据来源 导入方便标识备用字段
     */
    @ApiModelProperty(value = "数据来源 导入方便标识备用字段")
    private String dataSources;

    @javax.persistence.Transient
    @ApiModelProperty(value = "子节点")
    private List<RatingUnitBean> children;

    @javax.persistence.Transient
    @ApiModelProperty(value = "是否有子集")
    private Boolean hasChildren;

    @javax.persistence.Transient
    @ApiModelProperty(value = "子集个数")
    private int childrenNum;

    public Boolean getHasChildren() {
        return this.childrenNum > 0;
    }
}
